package it.orma.iridehr.service.opportunita;


import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.persistence.Query;

import it.orma.iridehr.controllers.form.azienda.OpportunitaAziendaForm;
import it.orma.iridehr.controllers.form.ricercaAziende.RicercaAziendeForm;
import it.orma.iridehr.controllers.ricerca.NewsForm;
import it.orma.iridehr.entities.News;
import it.orma.iridehr.entities.Opportunita;
import it.orma.iridehr.entities.azienda.Azienda;
import it.orma.iridehr.entities.azienda.ContattoAzienda;

import it.orma.iridehr.repository.azienda.AziendaRepository;
import it.orma.iridehr.repository.opportunita.OpportunitaRepository;
import it.orma.iridehr.repository.ricercaAziende.RicercaAziendeRepository;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.transaction.annotation.Transactional;

@Transactional
public class OpportunitaService {

	static final Logger logger = LogManager.getLogger(OpportunitaService.class);

	@Autowired
	private OpportunitaRepository opportunitaRepository;
	
	@Autowired
	private RicercaAziendeRepository ricercaAziendeRepository;
	
	@Transactional
	public Boolean salvaDatiOpportunita(Opportunita opp){
	
		opportunitaRepository.salvaDatiOpportunita(opp);
		opp.setAziendaNotDefined(false);
		opp.setAziendaToBeDefined(false);
		
		opp.setAzienda(ricercaAziendeRepository.caricaAzienda(opp.getAzienda().getIdAzienda()));
		
		return true;

	}
	
	public void countOpportunita(OpportunitaAziendaForm oppForm,Integer idAzienda){
		oppForm.setOppsTot(opportunitaRepository.countOpportunita(idAzienda));
	}
	
	public void caricaOpportunita(OpportunitaAziendaForm oppForm,Integer idAzienda){
		oppForm.setSearched(true);
		oppForm.setOpps(opportunitaRepository.caricaOpportunita(1, idAzienda));
		
	}
	
	public void refreshOpportunita(OpportunitaAziendaForm oppForm,Integer idAzienda){
		oppForm.setOpps(opportunitaRepository.caricaOpportunita(oppForm.getPagina(), idAzienda));	
	}
	
    public String getBannerHtml(int maxIndiciShow, int indicePag,int recordTotali,OpportunitaAziendaForm oppForm, int recordXpagina){
    	
    	String html="";
    	if(indicePag < 1)
    		indicePag = 1;
    	//si pagina solo se i dati superano la dimensione di una pagina
    	if(recordTotali > recordXpagina){		
    		//Costruzione menu di paginazione
    		int mostratiDa = (indicePag-1)*recordXpagina+1;
    		html="<table width='100%'><tr><td><span class='pagebanner'>"+recordTotali+" records trovati, mostrati da "+
    			mostratiDa+" a "+(mostratiDa+oppForm.getOpps().size()-1);
    		html+=".</span><span class='pagelinks'>";
    		int pagineRapp=recordTotali/recordXpagina;
    		if(recordTotali%recordXpagina>0)
    			pagineRapp++;
    		if(indicePag==1)
    				html+="[Primo/Prec.] ";
    		else{
    			html+="[<a href=\"javascript:cambiaPagDati(1)\">Primo</a>";
    			html+="/<a href=\"javascript:cambiaPagDati("+(indicePag-1)+ ")\">Prec.</a>]";
    		}
    		int start = 1;
    		int end = pagineRapp;     		
    		if(pagineRapp>maxIndiciShow){
	    		if(indicePag - maxIndiciShow/2 < 1 )
	    			end = maxIndiciShow;
	    		else if(indicePag + maxIndiciShow/2 > pagineRapp)
	    			start = pagineRapp - maxIndiciShow;
	    		else{
	    			start = indicePag - maxIndiciShow/2;
	    			end = indicePag + maxIndiciShow/2;	
	    		}    			
    		} 
    		if(start>1)
    			html+="...";
    		for(int i=start;i<end+1;i++){
    			if(i == indicePag)
    				html+="<b> "+i+"</b>,";
    			else{
    				html+=" <a href=\"javascript:cambiaPagDati("+i+")\" title='Vai a pagina "+i+"'>"+i+"</a>,";
    			}
    		}
    		html=html.substring(0,html.length()-1);
    		if(indicePag==pagineRapp)
    				html+=" [Succ./Ultimo] ";
    		else{
    			if (end<pagineRapp){
    				html+=" ...";
        		}
    			html+=" [<a href=\"javascript:cambiaPagDati("+(indicePag+1)+")\">Succ.</a>";
    			html+="/<a href=\"javascript:cambiaPagDati("+pagineRapp+")\">Ultimo</a>]";
    		}	
    		html+="</span></td></tr></table>";
    	}
    	
    	return html;
    }
	


}
